﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sistema.Modelo;
using Sistema.Dao;
using System.Data.SqlClient;
using Sistema.Visao.Pessoa.Pais;

namespace Sistema.Visao.Pessoa.Estado
{//anre o namespace
    public partial class dataEstado : Form
    {//abre o dataestado
        //contrutor padrao
        public dataEstado()
        {
            InitializeComponent();
        }

        //variaveis globais
        formEstado estado;
        int opcao,auxCodigo,codpais;
        Boolean op;
        string sigla,nomeestado,auxPesquisa,alterapais;
        public int auxcodigopais;
        EstadoMod mod = new EstadoMod();// variavel da classe modelo
        EstadoDao dao = new EstadoDao();// variavel da classe dao
        PaisDao daop = new PaisDao();

        public void atualizaCombo(int Selecao, String Busca)
        {
            //utilitario para atualizar os valores do combo pais codigo e pais nome
            daop.SelecionarPais(Busca, Selecao);
            SqlDataAdapter i = daop.getSelect();
            DataTable da = new DataTable();
            i.Fill(da);
            cbCodigo.DataSource = da;
            cbCodigo.DisplayMember = "Pais_Codigo";
            cbCodigo.ValueMember = "Pais_Codigo";

            cbPais2.DataSource = da;
            cbPais2.DisplayMember = "Pais_Nome";
            cbPais2.ValueMember = "Pais_Nome";

        }
        //contrutor lincado com formEstado para cadastro
        public dataEstado(formEstado aux, Boolean auxiliar)
        {
            InitializeComponent();
            estado = aux;
            op = auxiliar;

        }
        //construtor lincado com formEstado para estado
        public dataEstado(formEstado aux, string aux2, Boolean auxiliar,int cod,string auxsigla,int  codigoPais)
        {
            InitializeComponent();
            estado = aux;
            nomeestado = aux2;
            op = auxiliar;
            auxCodigo = cod;
            sigla = auxsigla;
            codpais = codigoPais;
        }
        
        private void dataEstado_Load(object sender, EventArgs e)
        {//abre o load
            if (op == true)////se for true opção é cadastro
            {//abre o if
                atualizaCombo(0, "");// atualiza o como
            }//fecha o else
            else
            {//abre o else
                //passa os valores para alteração
                atualizaCombo(4, Convert.ToString(codpais));
                tbPais.Text = cbPais2.Text;
                tbEstado.Text = nomeestado;
                tbSigla.Text = sigla;
            }//fecha o else

        }//fecha o load

        private void button1_Click(object sender, EventArgs e)
        {//abre o o button

             if (op == true)//se op for igual a true sgnifica que a opção é de cadastro
            {//abre o if
                //messagem para perguntar se deseja mesmo cadastrar o pais
                DialogResult Result = MessageBox.Show("Tem certeza que deseja cadastrar o Estado " + tbEstado.Text, "Cadastro de Estado", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (Result == DialogResult.Yes)
                {//abre o if do Tem certeza que deseja cadastrar
                     mod.Estado_Nome = tbEstado.Text;
                     mod.Estado_Sigla = tbSigla.Text;
                     mod.codigo_pais = Convert.ToInt32(cbCodigo.Text);
                     dao.ExecutarProcedimentoEstado(mod, 1); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                     MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados
               
                    //message para perguntar se que um novo cadastro
                    DialogResult ResultNovoCadastro = MessageBox.Show("Gostaria de fazer outro cadastro", "Cadastro de Estado", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                    // se responder sim, fazer novo cadastro
                    if (ResultNovoCadastro == DialogResult.Yes)
                    {

                        tbSigla.Clear();
                        tbEstado.Clear();//limpa o campo
                                            }
                    // se responder nao, sair do form
                    else if (ResultNovoCadastro == DialogResult.No)
                    {
                        estado.AtualizarGrid(0, "");//atualiza o grid da tabela depois do cadastro
                        estado.pegadados();//pega dados atualizados
                        this.Hide();//sair do form
                    }//fecha o if

                }//fecha o if do Tem certeza que deseja cadastrar
            }//fecha o if do Cadastro
            
            else
            {//abre o else
                //passa os valores para os itens de alteração
                mod.Estado_Nome = tbEstado.Text;
                mod.Estado_Sigla = tbSigla.Text;
                mod.Estado_Codigo = auxCodigo;
                mod.codigo_pais = auxcodigopais;
                dao.ExecutarProcedimentoEstado(mod, 2); // passando os valores da camanda modelo para a dao para poder realizar a execucao no banco 
                MessageBox.Show(Convert.ToString(dao.getMensagem()));// retornando a mensagem da operacao no banco de dados
                estado.AtualizarGrid(0, "");//atualiza o grid do estado
                estado.pegadados();//pega os dados atualizados
                this.Hide();//fecha o form
            }//fecha o else
        }//fecha o button

        private void button3_Click(object sender, EventArgs e)
        {//abre o button3
            formPais vai = new formPais(this, opcao);//para pegar o país 
            vai.ShowDialog();
        }//fecha o button3

        private void button2_Click(object sender, EventArgs e)
        {//abre o button2
            estado.AtualizarGrid(0, "");//atualiza o grid do estado
            estado.pegadados();//pega os dados atualizados
            this.Hide();//fecha o form
        }//fecha o button2

        
        private void tbPais_MouseClick(object sender, MouseEventArgs e)
        {
            formPais vai = new formPais(this, opcao);//chama o form quando pessoa clicar em cima do textbox do pais
            vai.ShowDialog();
        }

        
    }//fecha o form
}//fecha o namespace
